package com.jiyinit.web.core.mobile.util;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

public class FilesUtil {
	
	private FilesUtil(){}
	
	/**
	 * 用来创建文件<br>
	 * 在文件的文件夹路径存在时使用，<br>
	 * 文件夹路径不存在时会抛异常<br>
	 * @param path
	 * @return
	 * @throws IOException 
	 */
	public static boolean createFile(String path) throws IOException {
		File file = new File(path);
		return createFile(file);
	}
	
	/**
	 * 用来创建文件<br>
	 * 在文件的文件夹路径存在时使用，<br>
	 * 文件夹路径不存在时会抛异常<br>
	 * @param file
	 * @return
	 * @throws IOException 
	 */
	public static boolean createFile(File file) throws IOException {
		RandomAccessFile accessFile = null;
		try {
			if (!file.exists()) {
				accessFile = new RandomAccessFile(file, "rw");
				return true;
			}else{
				if(file.isDirectory()){
					throw new IOException(file.getPath()+" 已存在, 但是它是文件夹");
				}else{
					return true;
				}
			}
		} catch (Exception e) {
			throw e;
		} finally{
			if(accessFile != null){
				accessFile.close();
			}
		}
	}
	
	/**
	 * 创建文件夹
	 * @param path
	 * @return
	 */
	public static boolean createDirectory(String path){
		if(path != null && !"".equals(path)){
			File file = new File(path);
			return createDirectory(file);
		}
		return false;
	}
	
	/**
	 * 创建文件夹
	 * @param file
	 * @return
	 */
	public static boolean createDirectory(File file){
		if(!file.exists()){
			return file.mkdirs();
		}
		return false;
	}

	/**
	 * 创建文件夹和文件 例如：C:/aaa/bbb/ccc.txt,若此路径存在则创建ccc.txt<br>
	 * 若此路径不存在则先创建文件夹再创建文件。<br>
	 * @param path
	 * @throws IOException 
	 */
	public static boolean createDirectoryAndFile(String path) throws IOException {
		if(path != null && !"".equals(path)){
			File file = new File(path);
			return createDirectoryAndFile(file);
		}
		return false;
	}
	
	/**
	 * 创建文件夹和文件 例如：C:/aaa/bbb/ccc.txt,若此路径存在则创建ccc.txt<br>
	 * 若此路径不存在则先创建文件夹再创建文件。<br>
	 * @param file
	 * @throws IOException 
	 */
	public static boolean createDirectoryAndFile(File file) throws IOException {
		String path = file.getPath();
		String name = file.getName();
		String directoryStr = path.substring(0, path.length()-name.length());
		File directory = new File(directoryStr);
		if(!directory.exists()){
			if(directory.mkdirs() && FilesUtil.createFile(file)){
				return true;
			}
		}else{
			return FilesUtil.createFile(file);
		}
		return false;
	}

	/**
	 * 删除文件
	 * @param path
	 * @return
	 */
	/*public static boolean deleteFile(String path) {
		File file = new File(path);
		return deleteFile(file);
	}*/
	
	/**
	 * 删除文件
	 * @param
	 * @return
	 */
	/*public static boolean deleteFile(File file) {
		if (file.exists()) {
			return file.delete();
		} else {
			return false;
		}
	}*/

	/*public List<File> getFileList(File file) throws IOException {
		if(!file.exists()) throw new IOException("该目录不存在.");
		String[] strings = file.list();
		File[] listFiles = file.listFiles();

		for (String str : strings) {
			System.out.println(str);
		}
		for (File fle : listFiles) {
			System.out.println(fle.getPath());
		}
	}*/

	public static void main(String[] args) {
		try {
			File file = new File("C:\\");
			if(!file.exists()) throw new IOException("该目录不存在.");
			String[] strings = file.list();
			File[] listFiles = file.listFiles();

			for (String str : strings) {
				System.out.println(str);
			}
			for (File fle : listFiles) {
				System.out.println(fle.getPath());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
